#ifndef MYDECODETHREAD_H
#define MYDECODETHREAD_H

//解码和显示视频
#include <list>
#include <mutex>
#include <QThread>

struct AVPacket;
class MYDecode;

class MYDecodeThread : public QThread
{
public:
    MYDecodeThread();
    virtual ~MYDecodeThread();
    // 往任务队列插入一个待处理数据
    virtual void Push(AVPacket *pkt);
    // 清理队列
    virtual void Clear();
    // 清理资源，停止线程
    virtual void Close();

    // 取出一帧数据，并出队列，如果没有返回NULL
    virtual AVPacket *Pop();

    // 最大队列容量 （最大缓冲近2s）
    int maxList = 100;
    bool isExit = false;

protected:
    MYDecode *decode = 0;
    std::list <AVPacket *> pack_list;  // 用list 双向链表来当队列用
    std::mutex mux;
};

#endif // MYDECODETHREAD_H
